home *** CD-ROM | disk | FTP | other *** search
/ Practical Algorithms for Image Analysis / Practical Algorithms for Image Analysis.iso / LIBIP / IP.H < prev    next >
C/C++ Source or Header  |  1999-09-11  |  6KB  |  156 lines

  1. /* 
  2.  * ip.h
  3.  * 
  4.  * Practical Algorithms for Image Analysis
  5.  * 
  6.  * Copyright (c) 1997, 1998, 1999 MLMSoftwareGroup, LLC
  7.  */
  8.  
  9. /*
  10.  * IP.H
  11.  * General include file for Image Processing routines
  12.  * This file also includes headers for libtiff
  13.  * and draw routines
  14.  */
  15.  
  16. #include "ph.h"
  17. #include "tiffio.h"
  18. #include "draw.h"
  19. #include "lldef.h"
  20. #include "sgl_stat.h"
  21. #include "convolve.h"
  22. #include "pcc2.h"
  23. #include "bdy_stru.h"
  24. #include "misc.h"
  25.  
  26. /* global constants */
  27. #if defined(WIN32)
  28. #define PI        3.14159265358979
  29. #endif
  30.  
  31. /* function prototypes */
  32.  
  33. /* in pv.c */
  34. extern double angular_bend (float *d_phik, float *phi_k, long nv);
  35. extern double arc_length (float *d_lk, float *arc_len, long nv);
  36. extern double vert_to_clen (struct spoint *v, float *s, long nv);
  37. extern double curvature_energy (float *d_phik, float *d_lk, long nv);
  38. extern int find_interior_pt (struct spoint *v, int nv,
  39.                              int *xi, int *yi, int *e_out, double tot_phi);
  40. extern unsigned int reconstruct_poly (float *d_phik, float *d_lk, long nv,
  41.                                       struct spoint *v, struct spoint *porg, int e_outk, double tot_phi, Image * imgIO, int value);
  42. /* in ph.c */
  43. extern void fill_bdy_structure (struct Bdy *bdp, struct spoint *v, long nv,
  44.                                 double tot_phi);
  45. extern struct spoint *poly_hull (struct Bdy *bdp, struct spoint *v_ap, double av_dirn, int *hull_area, Image * imgIO, int value);
  46. extern struct spoint *poly_hull_tol (struct Bdy *bdp, struct spoint *v_ap, double av_dirn, int *hull_area, float tol, Image * imgIO, int value);
  47. /* in p_app.c */
  48. extern void poly_approx (struct Bdy *bdp, double tol);
  49. extern void err (char *s, int a1, int a2, int a3, double a4, int a5, int a6,
  50.                  int a7, int a8, int a9, int a10, int a11, int a12);
  51. extern void abort1 (char *s, int a1, int a2, int a3, double a4, int a5, int a6,
  52.                     int a7, int a8, int a9, int a10, int a11, int a12);
  53. #if defined(LINUX)
  54. extern int winding_ccw (Sp *** appp, Sp *** bppp);
  55. extern int winding_cw (Sp *** appp, Sp *** bppp);
  56. #else
  57. extern int winding_ccw (const void *appp, const void *bppp);
  58. extern int winding_cw (const void *appp, const void *bppp);
  59. #endif
  60. extern void convex_hull (struct Bdy *bdp);
  61. extern struct spoint *reprt_hull_center (void);
  62.  
  63. /* in sgl_stat.c */
  64. extern float nematic_op (int n_sgl, int n_segm, float *dirns);
  65. extern float eccentr (struct Segm *segm, struct linklist *list,
  66.                       float *len, float *width);
  67. extern void find_ex_hist (int n_segm, float *asp_ratio,
  68.                           int *ex_hist, double bw, double ar_base);
  69. extern int zero_moment (int nv, int *xv, int *yv);
  70. extern void find_area_hist (int n_segm, int *area,
  71.                             int *area_hist, int bw, int area_base);
  72. extern void find_lsz_hist (int n_segm, int *lsize, int *lsz_hist,
  73.                            int nbins, int lsz_base);
  74.  
  75. /* in pmom.c */
  76. extern struct spoint *poly_moments (long nv, struct spoint *v, float *moments, Image * imgIO, int value);
  77.  
  78. #if defined(WIN32)
  79. /* in getopt.c */
  80. static void get_next_index (void);
  81. extern int getopt (int argc, char **argv, char *optstring);
  82. #endif
  83.  
  84. /* in ip.c */
  85. extern void exitmess (char *prompt, int status);
  86.  
  87. /* in fft.c */
  88. extern void fft (int npoints, float *real, float *imag, int inv);
  89.  
  90. /* in fft2d.c */
  91. extern void fft2d (float **imgReal, float **imgImag, register long nRow, register long nCol, short flag);
  92.  
  93. /* in fltrbttr.c */
  94. extern void fltrbttr (float **imgReal, float **imgImag, long nRow, long nCol, short passType, double f1, double f2, double order);
  95.  
  96. /* in fltrgaus.c */
  97. extern void fltrgaus (float **imgReal, float **imgImag, long nRow, long nCol, short passType, double f1, double f2);
  98.  
  99. /* in convolve.c */
  100. extern int convolve (Image * ImageIn, Image * ImageOut, Matrix * Kernel);
  101.  
  102. /* in n2_pv.c */
  103. extern int vert_to_phi_star (struct spoint *v, long nv, float *phi_star);
  104. extern double zero_mom (struct spoint *v, long nv);
  105. extern double shape_parm (double c_len, float *moments);
  106. extern double E_dist (struct spoint *pt1, struct spoint *pt2);
  107. extern double tg_turn_an (double m1, double m2);
  108. extern double slope (struct spoint *pt1, struct spoint *pt2);
  109. extern double vcp (struct spoint *v1, struct spoint *v2);
  110. extern double cont_bend_en (struct spoint *v, long nv);
  111. extern void r_dev (struct spoint *vc, struct spoint *v, float *r, long nv, float *moments, Image * imgIO, int value);
  112. extern void n2_vert (struct spoint *v, float *s, long nv, struct spoint *v_n2, long nv2, Image * imgIO, int value);
  113.  
  114. /* proc_poly.c */
  115. extern struct polygon *select_poly (struct polygon *poly_head, Image * imgIO, int value);
  116.  
  117. /* acm_io.c */
  118. extern int acm_prm_size (FILE * file);
  119. extern int acm_cont_parms (FILE * file);
  120. extern int acm_record_size (FILE * file);
  121. extern int acm_moments (FILE * file);
  122. extern void acm_shape_parms (FILE * file, float *c_len, float *area,
  123.                              float *pc_len, float *p2a, float *e_bend);
  124. extern void get_acm_data (FILE * file,
  125.                           int n_mode_parms, int *mode_parms, int n_moments,
  126.              float *moments, int n_pts, float *power_spec, float *corr_fct);
  127. extern void write_acm_file (FILE * file,
  128.                         long nv2, float *p_spec, float *acf, float *moments,
  129.                          int n_mom, int *mode_parms, int n_mp, double c_len,
  130.             double pix_ct, double res_c_len, double g_shape, double e_bend);
  131. extern void write_fd_file (FILE * file, int n_order, float *a_n,
  132.                            double length, double area, double ratio);
  133.  
  134. /* descript.c */
  135. extern void descriptors (float *dphik, float *dlk, long mcp,
  136.                          float *a_n, float *b_n, long n_order);
  137. extern void msdescriptors (float *delta_phik, float *delta_lk,
  138.                            long mcp, float *a_n, float *b_n, long n_order);
  139. extern void vdot (float *dphik, float *dlk, float *dc_term, long mcp);
  140. extern void vsin (float *source, float *dest, long mcp);
  141. extern void vcos (float *source, float *dest, long mcp);
  142. extern void vrtop (float *x, float *y, float *mod, float *arg, long mcp);
  143.  
  144. /* psaf.c */
  145. extern void psaf (long n2, float *inp, float *cf, float *ps);
  146. extern void spec_and_corr (long n2, float *inp, float *cf, float *ps);
  147. extern double spec_bend_en (long nv, float *ps, double c_len);
  148.  
  149. /* license.c */
  150. extern void print_sos_lic ();
  151. extern void print_bcd_lic ();
  152.  
  153. #if defined(LINUX)
  154. #define flushall() {fflush(stdin);fflush(stdout);fflush(stderr);}
  155. #endif
  156.